Merged
Conversation
When Escape is pressed on an empty input buffer at a wait prompt, dismiss the wait and proceed as if it was never requested. This lets users cancel a Ctrl+W wait without sending a dummy follow-up or killing coven entirely. For Ctrl+W waits in ralph/worker, dismissing falls through to process special tags (break, wait-for-user, transitions) from the last message. For regular follow-up prompts, dismiss exits the session. Adds `InputAction::Dismiss` (Escape on empty) distinct from `Cancel` (Escape with text), and `WaitResult::Dismissed` / `WaitInterruptResult` to propagate the distinction through the wait chain. Existing callers of `wait_for_interrupt_input` are unchanged; only Ctrl+W paths switch to `wait_for_dismissable_input`. Closes #45 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Option C from #45: pressing Escape on an empty input buffer at a wait prompt dismisses the wait and proceeds normally.
Adds
InputAction::Dismiss(distinct fromCancel),WaitResult::Dismissed, andwait_for_dismissable_inputto propagate the dismiss/exit distinction through the wait chain. Existing callers ofwait_for_interrupt_inputare unchanged.Hint text updated to show
Esc skipon follow-up prompts.Closes #45
Test plan
cargo fmt— cleancargo clippy— no warningscargo test— all 151 tests pass (120 unit + 31 VCR)coven ralph "do something", press Ctrl+W during session, then press Escape at the wait prompt — should proceed to next iterationcoven, let session complete, press Escape at follow-up prompt — should exit🤖 Generated with Claude Code